package modelo;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

public class Sentencias {
	
	
	public Sentencias(){
		super();
	}
	/*public void registrarAccion(Accion accion) {
		String tiraSQL = "INSERT INTO accion "+
		 				 "(descripcion) "+
		 				 "VALUES "+
		 				 "('"+accion.getDescripcion()+"')";
		Conexion.ejecutar(tiraSQL);
	}
	
	public List<Accion> consultarAcciones() {
		List<Accion> acciones = new ArrayList<Accion>();
		String tiraSQL = "SELECT * FROM accion";
		ResultSet resultSet = Conexion.consultar(tiraSQL);		
		try {
			while (resultSet.next()) {
				int codigo = resultSet.getInt("codigo");
				String descripcion = resultSet.getString("descripcion");
				Accion accion = new Accion(codigo, descripcion);
				acciones.add(accion);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return acciones;
	}*/
    

	public void insetarDatosCliente(Cliente cli){
	
		String tiraSQL = "INSERT INTO cliente VALUES('"+cli.getCedula()+"','"+cli.getNombre()+"','"+cli.getApellido()+"','"+cli.getDireccion()+"','"+cli.getTelefono()+"','"+cli.getEMail()+"')";
		Conexion.ejecutar(tiraSQL);
		
	}
	public Cliente obtenerCliente(String cedula){
		ResultSet rs;
		Cliente cliente = null;
		String nombre,apellido,direccion,telefono,email;
		    String tiraSQL="SELECT * FROM cliente WHERE cedula = '"+cedula+"';";
			rs=Conexion.consultar(tiraSQL);
			try {
				if(rs.next()){
				nombre=rs.getString("nombre");
				apellido=rs.getString("apellido");
				direccion=rs.getString("direccion");
				telefono=rs.getString("telefono");
				email=rs.getString("email");
				cliente=new Cliente(apellido,cedula,direccion,email,nombre,telefono);
				}
				
			} catch (SQLException e) {
				e.printStackTrace();
			}
		return cliente;		
		}
	
public void insetarDatosCategoria(Categoria cat){
	String tiraSQL="INSERT INTO categoria VALUES('"+cat.getCategoria()+"','"+cat.getDescripcion()+"');";
	Conexion.ejecutar(tiraSQL);
			
	
}

public void insetarDatosProducto(Producto pro){
String tiraSQL="INSERT INTO producto VALUES('"+pro.getCodProducto()+"','"+	pro.getCodCategoria()+"','"+pro.getDescripcion()+"',"+pro.getPrecio()+",'"+pro.getFechaRegistro()+"');";
	Conexion.ejecutar(tiraSQL);
}

public void insetarDatosIngrediente(Ingrediente ingre){
	System.out.println("hola");
String tiraSQL="INSERT INTO ingrediente  VALUES('"+ingre.getCodIngrediente()+"','"+ingre.getDescripcion()+"',"+ingre.getExistencia()+","+ingre.getPrecio()+");";
Conexion.ejecutar(tiraSQL);

}


public void insetarDatosOrden(Orden ord){
String tiraSQL="INSERT INTO orden VALUES('"+ord.getCodOrden()+"','"+ord.getCedula()+"','"+ord.getFecha()+"',"+ord.getTotalPagar()+");";
Conexion.ejecutar(tiraSQL);


}
public void insetarProductosOrden(Vector<DetalleOrden> detallesOrden){
	String tiraSQL;
	DetalleOrden detalle;
		for(int i=0;i< detallesOrden.size();i++){
			detalle=detallesOrden.elementAt(i);
	        tiraSQL="INSERT INTO ordenproducto VALUES('"+detalle.getCodOrden()+"','"+detalle.getCodProducto()+"',"+detalle.getCantidad()+");";
	        Conexion.ejecutar(tiraSQL);
		}

	}
public Vector<String> cargarIngredientes(){
Vector<String> vIngredientes;
vIngredientes= new Vector<String>();

	String tiraSQL="SELECT * FROM ingrediente;";
	ResultSet rs=Conexion.consultar(tiraSQL);
	String des;
	try {
		while(rs.next()){
			des=rs.getString("descripcion");
			vIngredientes.add(des);
		}
	} catch (SQLException e) {
		e.printStackTrace();
	}
return vIngredientes;
}

public Vector<String> cargarCategorias(){
Vector<String> vCategorias;
vCategorias= new Vector<String>();
	String tiraSQL="SELECT * FROM categoria;";
	ResultSet rs=Conexion.consultar(tiraSQL);
	String des;
	try {
		while(rs.next()){
			des=rs.getString("descripcion");
			vCategorias.add(des);
		}
	} catch (SQLException e) {
		e.printStackTrace();
	}
return vCategorias;
}

public Vector<String> cargarProductosCodicionados(String DescripcionCategoria){
	Vector<String> vProductos;
	vProductos= new Vector<String>();
	String codCategoria=this.ObtenerCodCategoria(DescripcionCategoria);
		String tiraSQL="SELECT * FROM producto where codcategoria='"+codCategoria+"';";
		ResultSet rs=Conexion.consultar(tiraSQL);
		String des;
		try {
			while(rs.next()){
				des=rs.getString("descripcion");
				vProductos.add(des);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	return vProductos;
	}
public List<DetalleProducto> cargarIngredientesPorProductosCod(String cod){
	List<DetalleProducto> listaDetalles =new ArrayList<DetalleProducto>();
	DetalleProducto detalle;
		String tiraSQL="SELECT * FROM ingredienteproducto WHERE codproducto='"+cod+"';";
		ResultSet rs=Conexion.consultar(tiraSQL);
		String codIngrediente;
		float cantidad;
		try {
			while(rs.next()){
				codIngrediente=rs.getString("codingrediente");
				cantidad=rs.getFloat("cantidad");
				detalle=new DetalleProducto(cantidad,codIngrediente,cod);
				listaDetalles.add(detalle);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	return listaDetalles;
	}
public void InsertarIngredientesProducto(Vector<DetalleProducto> detallesProducto){
   String tiraSQL;
DetalleProducto detalle;
	for(int i=0;i< detallesProducto.size();i++){
		detalle=detallesProducto.elementAt(i);
		tiraSQL= "INSERT INTO ingredienteproducto VALUES('"+detalle.getCodProducto()+"','"+detalle.getCodIngrediente()+"','"+detalle.getCantidad()+"');";
		Conexion.ejecutar(tiraSQL);
	}
	
	
}
public ResultSet obtenerIngredientes() {
	String tiraSQL = "SELECT * FROM ingrediente";
	ResultSet resultSet = Conexion.consultar(tiraSQL);		
	return resultSet;
}

public ResultSet obtenerProdVendMontoAsc(){
	String tiraSQL = "SELECT descripcion,count(descripcion) as cantidad,(precio*count(descripcion)) as total from producto,ordenproducto where producto.codproducto=ordenproducto.codproducto group by descripcion,precio order by (precio*count(descripcion)) asc";
	ResultSet resultSet = Conexion.consultar(tiraSQL);		
	return resultSet;
}
public ResultSet obtenerProdVendMontoDesc(){
	String tiraSQL = "SELECT descripcion,count(descripcion) as cantidad,(precio*count(descripcion)) as total from producto,ordenproducto where producto.codproducto=ordenproducto.codproducto group by descripcion,precio order by (precio*count(descripcion)) desc";
	ResultSet resultSet = Conexion.consultar(tiraSQL);		
	return resultSet;
}
public ResultSet obtenerProdVendCantidadAsc(){
	String tiraSQL = "SELECT descripcion,count(descripcion) as cantidad,(precio*count(descripcion)) as total from producto,ordenproducto where producto.codproducto=ordenproducto.codproducto group by descripcion,precio order by count(descripcion) asc";
	ResultSet resultSet = Conexion.consultar(tiraSQL);		
	return resultSet;
}
public ResultSet obtenerProdVendCantidadDesc(){
	String tiraSQL = "SELECT descripcion,count(descripcion) as cantidad,(precio*count(descripcion)) as total from producto,ordenproducto where producto.codproducto=ordenproducto.codproducto group by descripcion,precio order by count(descripcion) desc";
	ResultSet resultSet = Conexion.consultar(tiraSQL);		
	return resultSet;
}
public ResultSet obtenerIngredientesMasUsados(){
	String tiraSQL = "SELECT ingrediente.descripcion as descripcioningrediente,count(ingrediente.descripcion) as cantidad FROM ingrediente,ingredienteproducto,producto where ingrediente.codingrediente=ingredienteproducto.codingrediente and producto.codproducto=ingredienteproducto.codproducto group by ingrediente.descripcion order by cantidad desc;";
	ResultSet resultSet = Conexion.consultar(tiraSQL);		
	return resultSet;
}
public ResultSet obtenerIngredientesPorProducto(){
	String tiraSQL = "SELECT ingrediente.descripcion as descripcioningrediente,producto.descripcion as descripcionproducto FROM ingrediente,ingredienteproducto,producto where ingrediente.codingrediente=ingredienteproducto.codingrediente and producto.codproducto=ingredienteproducto.codproducto;";
	ResultSet resultSet = Conexion.consultar(tiraSQL);		
	return resultSet;
}
public String ObtenerCodIngrediente(String nombreIngrediente){
ResultSet rs;
String codingrediente="";
    String tiraSQL="SELECT codingrediente FROM ingrediente WHERE descripcion = '"+nombreIngrediente+"';";
	rs=Conexion.consultar(tiraSQL);
	try {
		rs.next();
		codingrediente=rs.getString("codingrediente");
	} catch (SQLException e) {
		e.printStackTrace();
	}
	
return codingrediente;		
}
public Ingrediente obtenerIngrediente(String codIngrediente){
	ResultSet rs;
	Ingrediente ingrediente = null;
	String descripcion ="";
	float existencia,precio;
	    String tiraSQL="SELECT * FROM ingrediente WHERE codingrediente = '"+codIngrediente+"';";
		rs=Conexion.consultar(tiraSQL);
		try {
			if(rs.next()){
			descripcion=rs.getString("descripcion");
			existencia=rs.getFloat("existencia");
			precio=rs.getFloat("precio");
			ingrediente=new Ingrediente(codIngrediente,descripcion,existencia,precio);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	return ingrediente;		
	}
public int contarIngrediente(){
	ResultSet rs;
	int i=0;
	    String tiraSQL="SELECT * FROM ingrediente;";
		rs=Conexion.consultar(tiraSQL);
		try {
			while(rs.next()){
				i++;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	return i;		
	}
public int obtenerCantidadProductoVendidos(){
	String tiraSQL = "SELECT descripcion,count(descripcion) as cantidad,(precio*count(descripcion)) as total from producto,ordenproducto where producto.codproducto=ordenproducto.codproducto group by descripcion,precio order by count(descripcion) asc";
	int i=0;
	ResultSet resultSet = Conexion.consultar(tiraSQL);	
	try {
		while(resultSet.next()){
			i++;
		}
	} catch (SQLException e) {
		e.printStackTrace();
	}
	return i;
}
public Producto obtenerProducto(String codProducto){
	ResultSet rs;
	Producto producto = null;
	String descripcion,codcategoria,fecharegistro;
	float precio;
	    String tiraSQL="SELECT * FROM producto WHERE codproducto = '"+codProducto+"';";
		rs=Conexion.consultar(tiraSQL);
		try {
			if(rs.next()){
			descripcion=rs.getString("descripcion");
			codcategoria=rs.getString("codcategoria");
			fecharegistro=rs.getString("fecharegistro");
			precio=rs.getFloat("precio");
			producto=new Producto(codcategoria,codProducto,descripcion,fecharegistro,precio);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	return producto;		
	}
public Categoria obtenerCategoria(String codCategoria){
	ResultSet rs;
	Categoria categoria = null;
	String descripcion;
	    String tiraSQL="SELECT * FROM categoria WHERE codcategoria = '"+codCategoria+"';";
		rs=Conexion.consultar(tiraSQL);
		try {
			if(rs.next()){
			descripcion=rs.getString("descripcion");
			categoria=new Categoria(codCategoria,descripcion);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	return categoria;		
	}
public Orden obtenerOrden(String codOrden){
	ResultSet rs;
	Orden orden = null;
	String cedula,fecha;
	float totalpagar;
	    String tiraSQL="SELECT * FROM orden WHERE codorden= '"+codOrden+"';";
		rs=Conexion.consultar(tiraSQL);
		try {
			if(rs.next()){
				cedula=rs.getString("cedula");
				fecha=rs.getString("fecha");
				totalpagar=rs.getFloat("totalpagar");
			orden=new Orden(cedula,codOrden,fecha,totalpagar);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	return orden;		
	}
public void comprarIngrediente(String codIngrediente,int cantidad){
	float existencia=0;
	String tiraSQL = "SELECT existencia FROM ingrediente WHERE codingrediente='"+codIngrediente+"'";
	ResultSet resultSet =Conexion.consultar(tiraSQL);
	try {
		resultSet.next();
		existencia=resultSet.getFloat("existencia");
	} catch (SQLException e) {
		e.printStackTrace();
	}

	tiraSQL = "UPDATE ingrediente SET existencia='"+(existencia+cantidad)+"' WHERE codingrediente='"+codIngrediente+"'";
    Conexion.ejecutar(tiraSQL);	
	}

public void ActualizarIngredientesPorCompra(List<Ingrediente> ingredientes){
	String codingrediente="";
	Ingrediente ingrediente;
	String tiraSQL = "SELECT * FROM ingrediente";
	ResultSet resultSet =Conexion.consultar(tiraSQL);
	try {
		
		while(resultSet.next()){
		codingrediente=resultSet.getString("codingrediente");
		for(int i=0;i<ingredientes.size();i++){
			ingrediente=ingredientes.get(i);
		  if(codingrediente.toString().compareTo(ingrediente.getCodIngrediente().toString())==0){
			tiraSQL = "UPDATE ingrediente SET existencia='"+(ingrediente.getExistencia())+"' WHERE codingrediente='"+codingrediente+"'";
		    Conexion.ejecutar(tiraSQL);	
			
		}
		}
		}
	} catch (SQLException e) {
		e.printStackTrace();
	}

	
	}

public void modificarCategoria(String codCategoria,Categoria categoria) {
	String tiraSQL = "UPDATE categoria SET descripcion='"+categoria.getDescripcion()+"' WHERE codcategoria='"+codCategoria+"'";
	                                      
  Conexion.ejecutar(tiraSQL);
}
public void modificarCliente(String cedula,Cliente cliente) {
	String tiraSQL = "UPDATE cliente SET nombre='"+cliente.getNombre()+"',apellido='"+cliente.getApellido()+"',telefono='"+cliente.getTelefono()+"',email='"+cliente.getEMail()+"',direccion='"+cliente.getDireccion()+"' WHERE cedula='"+cedula+"'";                               
    Conexion.ejecutar(tiraSQL);
}
public void modificarProducto(String codProducto,Producto producto) {
	String tiraSQL = "UPDATE producto SET codcategoria='"+producto.getCodCategoria()+"',descripcion='"+producto.getDescripcion()+"',precio='"+producto.getPrecio()+"',fecharegistro='"+producto.getFechaRegistro()+"' WHERE codproducto='"+codProducto+"'";
	                                      
  Conexion.ejecutar(tiraSQL);
}
public void modificarIngrediente(String codIngrediente,Ingrediente ingrediente) {
	String tiraSQL = "UPDATE ingrediente SET descripcion='"+ingrediente.getDescripcion()+"',precio='"+ingrediente.getPrecio()+"' WHERE codingrediente='"+codIngrediente+"'";                                     
  Conexion.ejecutar(tiraSQL);
}
public String ObtenerCodCategoria(String nombreCategoria){
ResultSet rs;
String codcategoria="";
    String tiraSQL="SELECT codcategoria FROM categoria WHERE descripcion =  '"+nombreCategoria+"'";
    rs=Conexion.consultar(tiraSQL);
	try {
		rs.next();
		codcategoria=rs.getString("codcategoria");
	} catch (SQLException e) {
			e.printStackTrace();
	}

return codcategoria;		
		
}
public String ObtenerCodProducto(String nombreProducto){
	ResultSet rs;
	String codProducto="";
	    String tiraSQL="SELECT codproducto FROM producto WHERE descripcion = '"+nombreProducto+"';";
		rs=Conexion.consultar(tiraSQL);
		try {
			rs.next();
			codProducto=rs.getString("codproducto");
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
	return codProducto;		
	}
}
